package com.ruoyi.system.mapper;



import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.system.domain.PProduct;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.time.LocalDate;
import java.util.List;

/**
 * 商品管理Mapper接口
 * 
 * @author ruoyi
 * @date 2024-12-31
 */
public interface PProductMapper extends BaseMapper<PProduct>
{
    /**
     * 查询商品管理
     * 
     * @param id 商品管理主键
     * @return 商品管理
     */
    public PProduct selectPProductById(Long id);

    /**
     * 查询商品管理列表
     * 
     * @param pProduct 商品管理
     * @return 商品管理集合
     */
    public List<PProduct> selectPProductList(PProduct pProduct);

    /**
     * 新增商品管理
     * 
     * @param pProduct 商品管理
     * @return 结果
     */
    public int insertPProduct(PProduct pProduct);

    /**
     * 修改商品管理
     * 
     * @param pProduct 商品管理
     * @return 结果
     */
    public int updatePProduct(PProduct pProduct);

    /**
     * 删除商品管理
     * 
     * @param id 商品管理主键
     * @return 结果
     */
    public int deletePProductById(Long id);

    /**
     * 批量删除商品管理
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deletePProductByIds(Long[] ids);

    //@Select("select * from p_product pr left join p_product_prop pro on pr.id=pro.product_id where cabinet_id = #{cabinetId}")
    PProduct getInfoByCabinetId(@Param("cabinetId") Long cabinetId, @Param("boxNo") Long boxNo);

    @Select("SELECT * " +
            "FROM p_product pr " +
            "WHERE " +
            "    box_no IS NOT NULL " +
            "    AND ( end_time <= CURDATE() " +
            "    or end_time BETWEEN CURDATE() + INTERVAL 1 DAY   " +
            "                   AND CURDATE() + INTERVAL #{day} DAY    ) ")
    List<PProduct> selectExpiredProduct(int day);
}
